<template>
    <div class="shop-carcontainer" style="position: relative">
        <!-- 商品列表项目区域 -->
        <div class="goods-list">
            <div class="mui-card" v-for="(item, i) in ShopcarList" :key="item.id">
				<div class="mui-card-content">
					<div class="mui-card-content-inner">
						<mt-switch 
                        v-model="$store.getters.getGoodsSelected[item.id]" 
                        @change="selectedChanged(item.id, $store.getters.getGoodsSelected[item.id])"></mt-switch>

                        <!-- <img :src="item.thumb_path"> -->
                        <img src="https://img14.360buyimg.com/n0/jfs/t1/167947/12/3767/410434/600a913eEb4d8aed3/ca4066beded5e04a.png" alt="">
                        <div class="info">
                            <h1>{{ item.title }}</h1>
                            <p>
                                <span class="price">￥{{ item.sell_price }}</span>
                                <numbox :initcount="$store.getters.getGoodsCount[item.id]" :goodsID="item.id"></numbox>
                                <!-- 如何从购物车中获取商品的数量 -->
                                <!-- 
                                        1. 我们可以先创建一个 空对象，然后循环购物车所有商品的数据，把当前循环这条商品的 ID，作为 对象的 属性名，
                                        count 值 作为 对象的 属性值，这样当把所有的商品循环一遍，就会得到一个对象：{ 88：2，89：1，90：4 }
                                 -->

                                 <!-- 以为是 a 标签，所以需要阻止其默认行为 -->
                                <a href="#" @click.prevent="remove(item.id, i)">删除</a>
                            </p>
                        </div>
                    </div>
				</div>
			</div>
        </div>

        <!-- 结算区域 -->
        <div class="mui-card settlement">
            <div class="mui-card-content">
                <div class="mui-card-content-inner jiesuan">
                    <!-- 这是一个最简单的卡片视图控件；卡片视图常用来显示完整独立的一段信息，比如一篇文章的预览图、作者信息、点赞数量等 -->
                    <div class="left">
                        <p>总计（不含运费）</p>
                        <p>已勾选商品 <span class="select_num">{{ $store.getters.getGoodsCount_Amount.count }}</span> 件， 总价 <span class="select_price">￥{{ $store.getters.getGoodsCount_Amount.amount }}</span></p>
                    </div>
                    <mt-button type="danger">去结算</mt-button>
                </div>
            </div>
		</div>

        <p>{{ $store.getters.getGoodsSelected }}</p>
    </div>
</template>

<script>
import numbox from '../subcomponent/shopcar_numbox.vue'
export default {
    data(){
        return {
            ShopcarList: [], // 存储购物车商品数据
        }
    },
    created(){
        this.getShopcarList();
    },
    methods: {
        getShopcarList(){
            // 获取到 store 中所有的商品的Id,然后拼接出一个用 逗号分隔的 字符串
            var idArr = [];
            this.$store.state.car.forEach(item => idArr.push(item.id));
            
            if(idArr.length <= 0){ // 如果 idArr 是空的，证明没有数据，则直接返回，不需要请求数据
                return ;
            }
            // 获取 购物车中 商品的列表
            this.$http.get("api/goods/getshopcarlist/" + idArr.join(",")).then(result => {
                if (result.body.status === 0) {
                    this.ShopcarList = result.body.message;
                }
            });
        },
        remove(id, index){
            // 点击删除后，将商品 从 store 中根据传递的 id 删除，同时将当前组件中 ShopcarList中，对用的商品组件使用 index 来删除
            if(confirm("确认要删除该商品嘛？")){
                this.ShopcarList.splice(index, 1); 
                this.$store.commit('removeFormCar', id);
            }else{
                window.event.returnValue = false;
            }
        },
        selectedChanged(id, status_val){
            // 每当点击开关，把最新的 开关状态，同步到 store中
            // console.log(id + "---" + status_val);
            var selected_info = { id, status_val };
            this.$store.commit("upatateGoodsSelected", selected_info);
        }
    },
    components:{
        numbox,
    },
}
</script>

<style scoped>
.shop-carcontainer{
    background-color: #eee;
    overflow: hidden;
}
.mui-card-content-inner{
    display: flex; /* 让元素在一行显示 */
    align-items: center;
}

.mui-card-content-inner img{
    width: 50px;
    height: 50px;
}

.info{
    display: flex;
    flex-direction: column; /* 改变方向 */
    justify-content: space-between;
}

.info h1{
    font-size: 13px;
}

.price{
    color: red;
    font-weight: bold;
}

.settlement{
    position: absolute;
    left: 0px;
    bottom: 50px;
    z-index: 99;
    width: 100%;
}
.jiesuan{
    display: felx;
    justify-content: space-between;
    align-items: center;  /* 纵向居中 */
}
.select_num, .select_price{
    color: red;
    font-weight: bold;
    font-size: 16px;
}
</style>